-
Couldn't load subscription status.
- Fork 318
[Ready for EngSys Review] ESRP Publishing #3187
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
…s in output folders
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR implements a new ESRP-based publishing strategy for Rust crates that uses cargo publish --dry-run to package crates and publishes them through ESRP instead of directly to crates.io. The changes include:
- Replacing direct crates.io publishing with ESRP release process
- Switching from
safeNametoreleaseInBatchparameters for artifact configuration - Refactoring
Pack-Crates.ps1to usecargo publish --dry-runinstead of custom vendoring - Updating package info extraction to work with
.cratefiles instead ofCargo.toml
Reviewed Changes
Copilot reviewed 13 out of 13 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| sdk/storage/ci.yml | Adds release parameters for storage crates and updates artifact configuration with releaseInBatch |
| sdk/servicebus/ci.yml | Adds release parameter for servicebus crate and updates artifact configuration |
| sdk/keyvault/ci.yml | Adds release parameters for keyvault crates and updates artifact configuration |
| sdk/identity/ci.yml | Adds release parameter for identity crate and updates artifact configuration |
| sdk/eventhubs/ci.yml | Adds release parameters for eventhubs crates and updates artifact configuration |
| sdk/cosmos/ci.yml | Adds release parameter for cosmos crate and updates artifact configuration |
| sdk/core/ci.yml | Adds release parameters for core crates with inconsistent naming and updates artifact configuration |
| sdk/canary/ci.yml | Adds release parameters for canary crates and updates artifact configuration |
| eng/scripts/Pack-Crates.ps1 | Refactors crate packing to use cargo publish --dry-run and removes custom vendoring logic |
| eng/scripts/Language-Settings.ps1 | Updates to extract package info from .crate files instead of Cargo.toml |
| eng/pipelines/templates/stages/archetype-sdk-client.yml | Filters artifacts based on releaseInBatch parameter |
| eng/pipelines/templates/stages/archetype-rust-release.yml | Replaces direct crates.io publishing with ESRP release process and removes yank job |
| eng/pipelines/templates/jobs/pack.yml | Adds logic to configure crate packing based on release parameters |
…he literal "$(ArtifactName)"
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nothing blocking if we need to get something in, but I'd really love to see us stop pushing and popping directories (at least don't use the manual set-location and restore way). There should be no reason to change directories with cargo.
Warning
SERVICE OWNERS: no need to review this PR. I'm making engsys changes to ci.yml files.
Really fixes #3035
[keeping as draft to avoid notifying everyone]
A new release crate-packing strategy for Rust which uses
cargo publish --dry-runto produce the crates:This uses existing tooling to do the build with no vendoring or separate packing. Release order sorting can be read from the tool output and doesn't need to be computed from metadata.
cargo publishalso verifies that dependencies defined in the package'sCargo.tomlare published and fails if they are not published.This also supports the current Pre-GA approach of not incrementing core's versions after release as the workspace dependency includes
For example:
If a package depends on
[email protected]and there is no[email protected]published on crates.io, the command will fail. It's possible to "atomically" generate packages for releases with unreleased dependencies if those dependencies are included in the package command (e.g.storage_blobsdepending onstorage_common)Formatting:
Formatting attempts to match reasonable outputs. Redirecting stderr from
cargo publishwould normally result in red console text. Thecargo publishcommand is also grouped: https://dev.azure.com/azure-sdk/public/_build/results?buildId=5461494&view=logs&j=b766ebde-1fdb-5f11-1350-46ddc53b23cf&t=7ef29fa0-f532-5653-3473-16dc04608431&l=104Tests: